package cn.kginglam.dynamic_excel.common.utils;

/**
 * @author: Lam
 * @date: 2021-09-17 16:35
 * @description:
 */
public class BitStatesUtils {

    /**
     * @param states 所有状态值
     * @param value  需要判断状态值
     * @return 是否存在
     */
    public static synchronized boolean hasState(long states, long value) {
        return (states & value) != 0;
    }

    /**
     * @param source 已有状态值
     * @param addTo  需要添加状态值
     * @return 新的状态值
     */
    public static synchronized long addState(long source, long addTo) {
        if (hasState(source, addTo)) {
            return source;
        }
        return (source | addTo);
    }

    /**
     * @param states 已有状态值
     * @param value  需要删除状态值
     * @return 新的状态值
     */
    public static synchronized long removeState(long states, long value) {
        if (!hasState(states, value)) {
            return states;
        }
        return states ^ value;
    }


    public static class BitStates {

        // 字段为空
        public final static Long FIELD_NULL = 1L;
        // 学生手机重复
        public final static Long STUDENT_PHONE_REPETITION = 1L << 1;
        // 学生证件号码重复
        public final static Long STUDENT_CARD_NO_REPETITION = 1L << 2;

    }


}



